package midianet.digital.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "TB_PESSOA")
@SequenceGenerator(name = "seqPessoa", sequenceName = "SQ_PESS_ID")
public abstract class Pessoa implements Entidade<Long>{
	
	@Id
	@GeneratedValue(generator = "seqPessoa")
	@Column(name = "PESS_ID")
	private Long id;
	
	@Column(name = "PESS_NOME", nullable = false, length = 80)
	private String nome;
	
	@Column(name = "PESS_EMAIL", nullable = true, length = 80)
	private String email;
	
	@Column(name = "PESS_CEP", nullable = false, length = 8)
	private String cep;
	
	@Column(name = "PESS_ENEDERECO", nullable = false, length = 120)
	private String logradouro;
	
	@ManyToOne
	@JoinColumn(name = "MUNI_ID",nullable = false)
	private Municipio cidade;
	
	@Column(name = "PESS_BAIRRO",nullable = false , length = 60)
	private String bairro;
	
	@Column(name = "PESS_NUMERO",nullable = false, length = 25)
	private String numero;
	
	@Column(name = "PESS_COMPLEMENTO",nullable = true, length = 50)
	private String complemento;

	@Column(name = "PESS_FONE",nullable = true, length = 15)
	private String telefone;
	
	@Column(name = "PESS_FONE_COMERCIAL",nullable = true, length = 15)
	private String telefoneComercial;
	
	@Column(name = "PESS_OBSERVACAO",nullable = true, length = 255)
	private String observacao;

	@Column(name = "PESS_ATIVO", nullable = false, columnDefinition = "boolean default true")
	private boolean ativo;
	
	public Long getId() {
		return id;
	}
	
	public void setId(final Long id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(final String nome) {
		this.nome = nome;
	}
	
	public String getObservacao() {
		return observacao;
	}
	
	public String getEmail() {
		return email;
	}
	
	public void setEmail(final String email) {
		this.email = email;
	}
	
	public String getCep() {
		return cep;
	}
	
	public void setCep(final String cep) {
		this.cep = cep;
	}
	
	public String getLogradouro() {
		return logradouro;
	}
	
	public void setLogradouro(final String logradouro) {
		this.logradouro = logradouro;
	}
	
	public Municipio getCidade() {
		return cidade;
	}
	
	public void setCidade(final Municipio cidade) {
		this.cidade = cidade;
	}
	
	public String getBairro() {
		return bairro;
	}
	
	public void setBairro(final String bairro) {
		this.bairro = bairro;
	}
	
	public String getNumero() {
		return numero;
	}
	
	public void setNumero(final String numero) {
		this.numero = numero;
	}
	
	public String getComplemento() {
		return complemento;
	}
	
	public void setComplemento(final String complemento) {
		this.complemento = complemento;
	}
	
	public String getTelefone() {
		return telefone;
	}
	
	public void setTelefone(final String numero) {
		this.telefone = numero;
	}
	
	public String getTelefoneComercial() {
		return telefoneComercial;
	}
	
	public void setTelefoneComercial(final String numero) {
		this.telefoneComercial = numero;
	}
	
	public void setObservacao(final String observacao) {
		this.observacao = observacao;
	}
	
	public boolean isAtivo() {
		return ativo;
	}
	
	public void setAtivo(final boolean ativo) {
		this.ativo = ativo;
	}
	
}